public class Test {
    public static void main(String[] args) {
        //运算符
        //+- */%(正负由分子符号决定)
        //增量运算符：会进行默认强转类型转换，强转可能会导致发生截断
    }
    public static void main9(String[] args) {
        //字符串类型 放在分号当中
        String str1 = "abcd";
        //字符串支持拼接
        String str2 = "ef";
        System.out.println(str1 + str2);
        int a = 10;
        int b = 20;
        System.out.println("a == " + 10);
        System.out.println("a + b == " + a + b);//1020 从左向右进行运算,故字符串先拼接上a再在后面拼接上b
        System.out.println("a + b == " + (a + b));//解决办法，增加优先级
        System.out.println(a + b + "== a + b");//先进行运算
        //int类型转为String
        //使用String.valueOf 方法进行转换
        int c =123;
        //1、
        String str3 = String.valueOf(c);
        System.out.println(str3);
        //2、
        String str4 = Integer.toString(c);
        System.out.println(str4);
        //3、
        String str5 = c + "";
        System.out.println(str5);
        //String转为int类型
        String str = "123";
        int val = Integer.parseInt(str);
        System.out.println(val + 1);
    }
    public static void main8(String[] args) {
        /**类型转换(操作数据时)：自动类型转换(隐式类型转换)、强制类型转换(显示)
         *自动类型转换：代码不需要经过任何处理，在代码编译时，编译器会自动进行处理。特点：数据范围小的转为数据范围大的时会自动进行
         * 强制类型转换：强制类型转换：当进行操作时，代码需要经过一定的格式处理，不能自动完成。特点：数据范围大的到数据范围小的。可能会导致截断
         */
        //自动类型转换
        int a = 10;
        long b = 10;
        //a = b;//error 无法大范围转换为小范围
        b = a;//可以小类型 自动转化为大范围
        float c = 0.5F;
        double d = 0.5;
        //c = d;//error
        d = c;
        //显式类型转换
        int a1 = 10;
        long b1 = 10;
        a1 = (int)b1;//强制转换，可能导致发生截断
        boolean flag = true;
        //flag =(boolean)a;//error 强制类型转换不一定能成功，不相干的类型不能互相转换
        /**
         * 类型提升(运算时)：不同数据类型进行运算时，会发生类型提升，即整型提升为int 浮点型提升为double
         */
        short e = 10;
        short h = 20;
        //short g1 = a + b;//error a b 发生类型提升结果变为了int类型
        //解决方法
        int g2 = e + h;//使用int类型接收
        short g3 = (short)(e + h);//运算结果进行强转，不过可能为导致截断
        byte e1 = 10;
        byte e2 = 20;
        int e3 = e1 + e2;
    }
    public static void main7(String[] args) {
        /**布尔类型 boolean
         *包装类型 Boolean
         *只有true false 两种表达方式
         *boolean类型在定义中没有明确大小，也没有明确处理字节码的指令，Oracle公司虚拟机实现中，boolean占一个字节
         */
        boolean flag = true;
        System.out.println(flag);
    }
    public static void main6(String[] args) {

        /**
         字符型变量:
        char 两个字节 可以存储一个汉字
         包装类型：Character
         JDK使用Unicode字符集
         */
        char ch = '牛';
        System.out.println(ch);
    }
    public static void main5(String[] args) {
        byte c = 20;
        System.out.println(c);
        System.out.println(Byte.MAX_VALUE);//-2^(7)~2^(7)-1
        System.out.println(Byte.MIN_VALUE);
    }
    public static void main4(String[] args) {
        short b = 10;
        System.out.println(b);
        System.out.println(Short.MAX_VALUE);//-2^(15)~2(15)-1
        System.out.println(Short.MIN_VALUE);
    }
    public static void main3(String[] args) {
        long a = 10L;//定义一个long类型变量时，初始化值需要加一个l/L证明是long类型，不然默认为int类型
        System.out.println(a);
        //取值范围
        System.out.println(Long.MIN_VALUE);// -2^(63)~2(63)-1
        System.out.println(Long.MAX_VALUE);
    }
    public static void main2(String[] args) {
        //变量：在程序运行过程中可以改变的量
        //语法：数据类型 变量名 = 初始值;

        //int型变量
        //int a;//1.不允许使用未定义的局部变量
        //System.out.println(a);
        //a = 10;//不能在使用之后进行初始化
        //定义方法
        int aa = 10;//直接初始化
        int aaa;
        aaa = 10;//使用变量之前进行初始化
        System.out.println(aaa);
        //取值范围4个字节 -2^(31) ~ 2(31) - 1 1个符号位 31个数值位
        System.out.println(Integer.MIN_VALUE);//包装类型 int - Integer char
        System.out.println(Integer.MAX_VALUE);
    }
    public static void main1(String[] args) {
    //字面常量：编辑运行时不可改变的常量
        //分为 ：字符串常量 整型常量 字符常量 boolean类型常量 浮点数类型常量 null型常量

     //数据类型：基本数据类型/内置类型 引用类型
     //基本数据类型：整型：byte short int long 浮点型：float double 字符型：char boolean类型
     //引用类型：String类型、接口、数组 可以理解为存放指针的类型
     //bit byte kb mb gb tb pb bit->byte(一字节8比特) 其它均是1024
    }
}
